Constant access gateway and de-duplicated data cache server

ABSTRACT

An Constant Access Gateway provides secure access for remote mobile computing users to centrally stored data without requiring a VPN connection or a direct connection to the LAN in which the data resides. A Cache Server works alone or in conjunction with the Constant Access Gateway to provide distributed access to the centrally stored data. The Cache Server performs local storage of de-duplicated versions of the centrally stored data, and may interact with the Constant Access Gateway to maintain cache coherency with the central data store.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) to U.S. Provisional Application No. 61/376,433, entitled Constant Access Gateway and De-Duplicated Data Cache Server, filed on Aug. 24, 2010.

FIELD OF THE DISCLOSURE

This disclosure relates to providing data access, and specifically for providing secure and efficient access to centrally-stored data.

BACKGROUND

Traditional data storage systems are designed to be centrally stored, managed and searched. Examples of such systems include backup servers, file servers, document repositories like SharePoint, Documentum etc. These systems typically reside in a corporate data center, behind a firewall, and are available only to those users who are connected to the corporate network, either via a LAN (local area network), or via a VPN (virtual private network) usually over a WAN (wide area network) such as the Internet.

There are several considerations that make it harder to maintain data centrally, including (1) the proliferation of remote sites, (2) the presence of mobile users, and (3) the proliferation of smart phones and other mobile devices. First, there are many remote sites in a company from which there is a need to access data that may be stored centrally. These sites may be connected to the central site either via a dedicated WAN connection or via a VPN over the Internet. However, given the latency of WAN connections, it may be difficult or slow to access data over the WAN from the central site. Second, there may be mobile and remote users in a corporation, who, while connected to the Internet, are not necessarily connected to the central site via a VPN connection. Third, many of these remote users may utilize mobile devices such as smart phones and tablets that may not have the ability to connect via a VPN, or for whom such connections are intermittent.

SUMMARY

The methods and systems described here can be used to provide secure, reliable, efficient, and ubiquitous access to centrally-stored data behind one or more firewalls, e.g., in a corporate data center from devices which are not directly connected to the corporate network via VPN or LAN.

Some embodiments described herein have two main components: a Constant Access Gateway and a De-duplicated Data Cache Server.

Constant Access Gateway

The Constant Access Gateway (CAG) can provide the following benefits:

-   -   1. Ubiquitous, secure access to corporate data without requiring         a VPN connection or opening any incoming firewall ports     -   2. Multi-level and multi-factor authentication with existing         authentication mechanisms     -   3. Built-in encryption     -   4. A scalable system supporting multiple simultaneous         connections     -   5. Configurable access to logical data flow direction,         supporting either just inflow or outflow or both     -   6. Configurable access based on user, location or other         identifiable metadata.

De-Duplicated Data Cache Server

The De-duplicated Data Cache Server (hereinafter, “the Cache Server”) includes a de-duplicated repository of data stored in the form of unique objects or blocks of data. The data is a cache that is intelligently built and managed based on the access needs of the site which is served by the Cache Server. Some of the features of the Cache Server are:

-   -   1. Distributed cache: the Cache Server may be distributed across         one or more remote sites, in addition to the central site,         enabling faster and more reliable access to data.     -   2. De-duplicated data: All data is stored in a de-duplicated         form, ensuring that only unique objects or blocks are stored at         each site. This makes data storage more efficient, and increases         the amount of useful data that can be stored at each site of the         Cache Server.     -   3. WAN efficiency: Only unique blocks or objects are transferred         to the Cache Server.     -   4. Intelligent handling of cache misses: The system keeps a map         of various potential sources of data. In the event that data is         requested that is not in the cache (a “cache miss”), the Cache         Server can intelligently retrieve the missing data from the best         available source based on cost, latency, and/or other factors.     -   5. Pre-population of data blocks: the system supports pushing         out blocks of data before they are needed in order to expedite         an anticipated future access at a remote site.     -   6. Flushing of data blocks: the system supports flushing out         data from a remote cache server based custom security policies,         the age of the data blocks in the cache, and/or other factors.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of disclosure, reference is now made to the following descriptions taken in conjunction with the accompanying drawings in which:

FIG. 1 is a network diagram that shows a sample deployment of a constant access gateway in accordance with certain embodiments.

FIG. 2 is a network diagram that shows a sample deployment of a constant access gateway and a de-duplicated data cache server in accordance with certain embodiments.

FIG. 3 is a flow diagram that shows a sample deployment of a constant access gateway in accordance with certain embodiments.

DETAILED DESCRIPTION Constant Access Gateway

As shown in FIG. 1, Constant Access Gateway (CAG) 100 enables secure, authenticated and policy-based transmission of data to and from a data store 104 behind a firewall 102. The CAG may be software- and/or hardware-based, and has access to one or more processors and memory operable to implement the capabilities described in this disclosure. CAG 100 may be placed in the DMZ (de-militarized zone) between firewall 102 and the Internet 108. Alternatively it may be placed anywhere on the Internet where it is reachable via a public IP address.

Connection Process

Mobile or remote devices 106 are connected to the Internet 108. These may include portable digital assistants (PDAs), laptop computers, cellular telephones, tablets, servers at remote sites and other computing devices. The mobile or remote devices are outside firewall 102, and hence cannot directly access the data store 104 without opening incoming ports on the firewall 102, which would pose a security risk. Instead, CAG 100 acts as a broker between mobile devices 106 and data store 104. CAG 100 has a private interface to data store 104, and also has an interface to the Internet 108. This setup allows the CAG to create a “virtual connection” between a mobile device and data store 104 as follows:

-   -   1. The data store 104 establishes an outbound connection with         CAG 100 that is initiated from behind the firewall. This         connection is called the control channel and is used for message         transmission between the CAG 100 and the data store 104. Some or         all of the communication between CAG 100 and data store 104 is         encrypted via an initial secure key exchange.     -   2. CAG 100 authenticates the data store 104 connection to         validate that the data store 104 is authorized to connect to CAG         100. This authentication may be performed using a pre-assigned         token, a certificate, a username/password combination or another         authentication mechanism.     -   3. The mobile or remote device initiates a connection to CAG         100, requesting a connection to data store 104. The mobile         device may connect using either a standard internet browser or         other software that is specifically configured to enable this         connection.     -   4. CAG 100 authenticates the request to verify the sender's         identity, and determines whether the requested connection is         authorized. Authentication/authorization is described in more         detail below.     -   5. If the connection request is authorized, CAG 100 first adds         the connection request to an internal queue, assigning it a         unique identifier. The CAG then forwards a connection request to         data store 104 on the secure control channel, identifying the         request using at least the assigned unique identifier.     -   6. Data store 104, upon receiving a request on the control         channel, first authorizes and authenticates the request based on         a variety of factors:         -   a. Is the device requesting a connection authorized to             connect over the CAG         -   b. Has the device requesting a connection provided the             necessary authentication information, for example: user             name/password, device access token or other similar             authentication mechanisms.     -   7. Data store 104, upon authentication, determines the resources         available for the mobile or remote device requesting the         connection, publishes only those resources to the device and         then initiates an outbound connection request to CAG 100,         identifying the request with the unique identifier.     -   8. CAG 100, upon receiving the outbound connection request from         the data store, finds a match in its internal queue of pending         connections using the unique identifier. Upon finding the match,         CAG 100 “joins” the connection between the CAG and the mobile         device together with the connection between the CAG and the data         store. Gateway 100 then informs mobile device 106 that a virtual         connection to data store 104 is available.     -   9. Once the virtual connection has been established, CAG 100         routes all data from the mobile device to data store 104, and         routes all data from the data store to the mobile device. Thus,         the mobile device and the data store can communicate with each         other as if they were directly connected via a socket         connection.

FIG. 3 shows the process by which a virtual connection is established between Mobile Device 300 and Data Center 301. First, the Data Center establishes an outbound connection 302 to CAG 303, using the connection parameters specified as part of the configuration. This establishes a secure Control Channel between Data Center 301 and CAG 303. Then, when Mobile Device 300 connects to CAG 303, the CAG communicates with Data Center 301 via the secure Control Channel already established. If the user of Mobile Device 300 is an authorized user and is permitted by the policy settings to be able to connect remotely via the CAG, the connection is accepted. Otherwise, the connection is rejected. If the user of Mobile Device 300 is an authorized user, Data Center 301 establishes a dedicated connection 304 to CAG 303 for that user, effectively establishing a secure channel between Mobile Device 300 and Data Center 301.

Authentication and Authorization

When a mobile device initiates a connection, Constant Access Gateway 100 performs authentication and authorization operations. Initially, while the mobile device is connected to the corporate network via a LAN or a VPN, the mobile device is given a secure token. The mobile device includes this secure token when making a connection request to CAG 100 to “prove” the mobile device's identity.

CAG 100 validates the token with a token authority to ensure that it is still valid. A variety of token management schemes may be used to determine when secure tokens become invalid. For example, secure tokens may automatically expire after a specified amount of time. A secure token may also be explicitly invalidated by the system for a variety of reasons. Token management may be handled by the CAG 100, or by an entity behind the firewall 102 (e.g. data store 104 or some other server).

After it has been determined that the token included in the device is valid, CAG 100 determines whether the mobile device is authorized to access the requested data service.

Configurable Direction of Logical Data Flow

Constant Access Gateway 100 allows granular configuration of logical data flow between data store 104 and mobile devices 106. For example, global, per-device, and per-user security policies may be configured to allow any of the following modes of data transmission:

-   -   1. Logical data inflow only: In this option, CAG 100 does not         permit any outbound flow of data from the data store. For         example, while CAG 100 might allow mobile devices 106 to store         data on the data store 104, it may not allow them to retrieve         data from the data store. This mode may be used to minimize the         outflow of sensitive data across the internet, while still         allowing data stored locally on mobile devices to be transferred         to the data store for backup.     -   2. Logical data outflow only: In this mode, CAG 100 does not         permit any logical inbound flow of data to data store 104, but         permits retrieval of data for devices connecting via CAG 100.         This mode may be used to prevent mobile devices from tampering         with the data in the data store and is useful for cases like         publishing.     -   3. Logical data inflow and outflow: In this mode, CAG 100         permits both logical inflow and outflow of data to the data         store 104.

Configurable Access Based on Data Type, User Profile, Location, and Other Factors

CAG 100 supports limiting access to data (e.g. preventing data access entirely, or imposing limits on logical data flow such as those described above) on a per-user and/or a per-device basis. Data access may be based on one or more of the following properties of the mobile device and its user:

-   -   1. Device profile     -   2. User profile     -   3. Location of user     -   4. Days since disconnected from the corporate network     -   5. Data store location     -   6. Data type     -   7. Data classification     -   8. Data content     -   These properties may comprise configurable parameters, data         types and other intrinsic properties of the data to be         transmitted, and metadata, environmental and otherwise, which         may be used to block or otherwise restrict access across the         virtual communication channel between the mobile device and the         data store.

This configurability of CAG 100 provides organizations full control over data access and flow based on a variety of traits of the accessing user, device and the data being accessed.

The systems and methods described here allow access without requiring VPN or LAN access. Providing secure access to corporate data stores behind one or more firewalls without requiring a VPN is a challenge for most organizations. For example, mobile users can have devices containing data that has been created while the users are disconnected from the corporate network. The mobile user copy might be the only copy of the data that has been created, so the data needs to be backed up. However, lack of a consistent VPN connection can results in backups happening infrequently. In another example, end users may want to access their corporate data using their mobile devices even when they are not connected via VPN. Accessing this corporate data—which may be behind a corporate firewall—can be challenging. This issue can lead users to resort to methods for accessing data that might not be approved by the corporation (or other data manager or owner). Such users may synchronize data to public cloud-based solutions to allow them to access their data from anywhere. This approach can be a security concern for corporations, as their confidential data exists on computing assets not owned by the corporation, and may even present concerns about corporate compliance with regulatory requirements.

Providing reliable and high performance access to centrally stored data can also be a problem. Because of network latency issues, companies may resort to storing data in multiple sites. This can cause several issues:

-   -   1. Cost: maintaining infrastructure in multiple sites can lead         to increased costs. The data in remote sites has to be backed         up. This can lead to increased storage and administration costs.         Part of this cost is due to maintaining data storage facilities         in the multiple sites that are capable of mirroring a         sufficiently large portion of the central data to provide         efficient localized access to that data.     -   2. Security: an additional cost is the cost of ensuring that the         data stored in remote sites is secure.     -   3. Complexity: maintaining infrastructure in multiple sites can         lead to increased complexity.     -   4. Reduced control: since the data is no longer stored in a         central site, this can lead to reduced control.

De-Duplicated Data Cache Server

As shown in FIG. 2, a cache server with de-duplicated data enables secure, efficient, distributed, and disconnected access to corporate data that is stored centrally. Cache Server 200 contains a de-duplicated repository of data stored in the form of unique objects or blocks of data. Cache Server 200 also has one or more processors and memory configured to implement the capabilities described herein. Storage and management of the data on Cache Server 200 may be accomplished, for example, by a system such as that described in US Patent Publication Nos. US-2010-0161608 and US-2010-0161685, both of which are incorporated by reference herein in their entirety.

Cache Server 200 may, for example, be deployed behind a firewall 222 to provide efficient access to users in a remote site 212 in order to back up data stored on the remote site to data store 104. Another Cache Server 201 may be placed behind firewall 221 to provide read-only access to users within site 211 to de-duplicated copies of data stored centrally in data store 104 without introducing the additional network latency that would otherwise be involved in site 211 accessing that data through the internet. Users at main site 210 may, of course, access data store 104 directly through LAN 211, including users with mobile devices 106 who have LAN access directly to data store 104. Mobile devices 106 without direct LAN access to data store 104 may also access the data store through the Internet 108 using the Constant Access Gateway 100 as discussed above. Access to Cache Servers 200 or 201, or to data store 104 through Gateway 100 may also be obtained through a web-based self-service recovery system 230.

Data store 104 can include management and reporting systems 240, metering and chargeback systems 242, a key management system 244, and one or more active directory systems 246. Key management system 244 can create and manage tokens for users of Constant Access Gateway 100. Storage within data store 104 may be accomplished using a private cloud 254 within which one or more servers 254 provide access to de-duplicated object repositories and associated catalogs 252.

One or more servers 254 are responsible for maintaining a catalog, of de-duplicated objects. Without de-duplication, multiple copies of these objects would be stored in various places throughout the data store. In a de-duplicated data store, each of these objects is stored in the catalog only once and indexed according to a unique identifier. Other locations in the data store may include a reference to a de-duplicated object using that object's unique identifier. Servers 254 are also responsible for reconstructing and providing access to the original files (which may be reconstructed using the de-duplicated objects), including providing the files to an active directory service 246.

The data in the Cache Server 200 is intelligently built and managed based on the local access needs of users or devices dependent on that instance of the Cache Server. There can be multiple Cache Servers in an overall system. Some of the features of the Cache Server 200 are:

-   -   1. Distributed service: A Cache Server can be running on a         device that can service requests from just that device or that         can service multiple devices, e.g. one or more sites.     -   2. Data retrieval and storage using Cache Server: All data         storage and retrieval requests for devices configured to use         Cache Server 200 have the option of to first service their         request using the Cache Server instead of the central data         store. This enables faster access and storage of data. Cache         Server 200 can work in conjunction with Gateway 100 by having         the Cache Server connect to a data store through the Gateway in         the same manner as a mobile device.     -   3. De-duplicated: Data on the Cache Server is stored in a         de-duplicated form (i.e., only unique objects or blocks in the         data are stored, ensuring significant storage savings).     -   4. Automatic synchronization with central data store: The Cache         Server ensures that new data it receives from the devices it is         servicing is “synchronized” with the central data store. This         synchronization can be synchronous or asynchronous. This         synchronization may include the backup of local data to the         central data store.     -   5. De-duplicated transfer of data over the WAN: The Cache Server         only transmits or receives unique objects or blocks to the         devices it is servicing and to the central data store. In other         embodiments, the Cache Server may reconstruct files or other         data objects from the unique objects or blocks prior to passing         the files/objects to the serviced device.     -   6. Intelligent handling of cache miss: The Cache Server keeps a         map of various potential sources of objects and blocks along         with a measure of the cost of retrieval from those potential         sources. In the case of a cache miss, the Cache Server can         intelligently retrieve the missing block from the best available         source based metrics such as cost or latency.     -   7. Pre-population of objects or blocks: The Cache Server can         “pull-down” required blocks to service an anticipated future         access by devices it services. Such a pull-down can be manual or         automated based on policy settings.     -   8. Deletion of Cache Data: Cache Server 200 can delete objects         or blocks from its cache or restrict access to them based on         policies that define acceptable thresholds for multiple factors.         These factors include:         -   Age of data         -   Number of days since a secure VPN or LAN connection was             established with the corporate network         -   Access profiles (e.g. if a lot of data is suddenly being             accessed in an unusual manner         -   Data type: sensitive data as defined by an organization's             document classification properties

It will be appreciated that the scope of the present inventions is not limited to the above-described embodiments, but rather is defined by the appended claims, and that these claims will encompass modifications of and improvements to what has been described. For example, different types of processors and memory may be used to implement the Constant Access Gateway. There are many references to maintaining data in storage; this storage may be any suitable form of memory, such as digital disks, optical disks, or semiconductor memory. The processing acts that are described may be performed using any suitable hardware and/or software logic or combination thereof, and implemented using any suitable processor, such as a general-purpose processor or an application-specific processor. Many of the acts described above may be performed by software stored in computer-readable memory as instructions that, when executed, perform the described steps (e.g., establishing a connection, authentication, authorization, etc.). 

What is claimed is:
 1. A method for initiating secure and efficient communication using a gateway between a data store that is connected to a private internal network and a client device that is connected to an external network, wherein both the client device and the gateway are unable to initiate a direct network connection with the data store, the method comprising: a. establishing a first communication channel between the client device and the gateway via a network and assigning a unique identifier to said first communication channel; b. establishing, at the data store, a control channel between the data store and the gateway, wherein the establishment of the control channel is initiated by the data store; c. sending a connection request from the gateway to the data store via the control channel; d. establishing, at the data store, a second communication channel between the gateway and the data store and assigning said unique identifier to said second communication channel, wherein the establishment of the second communication channel is initiated by the data store; e. receiving inbound data at the gateway via the first communication channel; f. receiving outbound data at the gateway via the second communication channel; g. forwarding the inbound data to the data store via the second communication channel; and h. forwarding the outbound data to the client device via the first communication channel; wherein forwarding the inbound data to the data store and forwarding the outbound data to the client device creates a virtual communication channel between the client device and the data store.
 2. The method of claim 1, wherein establishing the control channel further comprises: a. receiving authentication information at the gateway from the data store; and b. using said authentication information to authenticate the data store.
 3. The method of claim 1, wherein the connection request from the gateway to the data store includes the unique identifier assigned to the first communication channel.
 4. The method of claim 1, wherein establishing the second communication channel further comprises: a. receiving authentication information from the gateway at the data store over the control channel; and b. using said authentication information to authenticate the client device.
 5. The method of claim 1, further comprising: a. determining at the data store which resources and associated actions are available to the client device; and b. publishing said resources and associated actions to the client device.
 6. The method of claim 1, further comprising: using the unique identifier assigned to the first communication channel to create the second communication channel.
 7. The method of claim 1, wherein the inbound data and the outbound data are encrypted.
 8. The method of claim 1, further comprising: a. receiving authentication information at the gateway from the client device; and b. using said authentication information to authenticate the client device.
 9. The method of claim 8, wherein said authentication information comprises a secure token.
 10. The method of claim 1, further comprising: a. determining, based on a configurable parameter, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the data store to the client device.
 11. The method of claim 1, further comprising: a. determining, based on a configurable parameter, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the client device to the data store.
 12. The method of claim 1, further comprising: a. determining, based on a property of data to be transferred, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the data store to the client device.
 13. The method of claim 1, further comprising: a. determining, based on a property of the data to be transferred, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the client device to the data store.
 14. The method of claim 1, further comprising: a. determining, based on metadata, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the data store to the client device.
 15. The method of claim 1, further comprising: a. determining, based on metadata, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. blocking the transfer of data over the virtual communication channel from the client device to the data store.
 16. A method of creating a de-duplicated cache at a cache server to be used in a networked system, said method comprising: a. receiving, at a cache server, a request for a data item, wherein said request is sent by a client device; b. determining that said data item is not stored in a cache on the cache server; c. retrieving said data item from a data store; d. storing said data item in the cache; and e. sending said data item to the client device.
 17. The method of claim 16, further comprising: a. receiving, at the cache server, local data from the client device; b. storing the local data in the cache; and c. synchronizing the local data stored in the cache with data stored in the data store.
 18. The method of claim 16, further comprising de-duplicating the cache to ensure that each data item stored in the cache is different from every other data item stored in the cache.
 19. The method of claim 16, wherein the client device and the cache server are located on the same local-area network.
 20. The method of claim 16, further comprising: pre-populating the cache with data likely to be required by the client device.
 21. The method of claim 16, further comprising: selecting the data store from a group of data stores.
 22. The method of claim 16, further comprising: deleting said data item from the cache.
 23. A system for providing secure and efficient communication using a gateway between a data store that is connected to a private internal network and a client device that is connected to an external network, wherein the client device and the gateway are unable to initiate a direct network connection with the data store, the system comprising: a. a data store for storing data in computer-readable form, said data store operable to transmit and receive data via the private internal network and comprising logic for establishing a control channel between the data store and a gateway; and b. a gateway connected to the external network, said gateway comprising: logic for sending a connection request from the gateway to the data store via said control channel; logic for establishing a first communication channel between the client device and the gateway and for assigning a unique identifier to said first communication channel; logic for establishing a second communication channel between the gateway and the data store and for assigning said unique identifier to said second communication channel; logic for receiving inbound data via the first communication channel; logic for receiving outbound data via the second communication channel; logic for forwarding the inbound data to the data store via the second communication channel; and logic for forwarding the outbound data to the client device via the first communication channel; wherein forwarding the inbound data to the data store and forwarding the outbound data to the client device creates a virtual communication channel between the client device and the data store.
 24. The system of claim 23, further comprising a firewall that is connected to the external network and to the private internal network, wherein all communication between the gateway and the data store passes through said firewall.
 25. The system of claim 23, wherein the gateway further comprises: a. logic for receiving authentication information from the data store; and b. logic for using said authentication information to authenticate the data store.
 26. The system of claim 23, wherein the connection request from the gateway to the data store includes the unique identifier assigned to the first communication channel.
 27. The system of claim 23, wherein the data store further comprises: a. logic receiving authentication information from the gateway over the control channel to authenticate the client device; and b. logic for using said authentication information to authenticate the client device.
 28. The system of claim 23, wherein the data store further comprises: a. logic for determining which resources and associated actions are available to the client device; and b. logic for publishing said resources and associated actions to the client device.
 29. The system of claim 23, wherein the gateway further comprises: logic for using the unique identifier assigned to the first communication channel to create the second communication channel.
 30. The system of claim 23, wherein the inbound data and the outbound data are encrypted.
 31. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on a configurable parameter, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the data store to the client device.
 32. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on a configurable parameter, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the client device to the data store.
 33. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on a property of the data to be transferred, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the data store to the client device.
 34. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on a property of the data to be transferred, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the client device to the data store.
 35. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on metadata, that the transfer of data over the virtual communication channel from the data store to the client device is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the data store to the client device.
 36. The system of claim 23, wherein the gateway further comprises: a. logic for determining, based on metadata, that the transfer of data over the virtual communication channel from the client device to the data store is to be blocked; and b. logic for blocking the transfer of data over the virtual communication channel from the client device to the data store.
 37. The system of claim 23, wherein the gateway further comprises: a. logic for receiving authentication information from the client device; and b. logic for authenticating the client device using said authentication information.
 38. The system of claim 37, wherein said authentication information comprises a secure token.
 39. A system for creating a de-duplicated cache at a cache server to be used in a networked system, said cache server comprising: a. a cache operable to store data items in computer-readable format; b. logic for receiving from a client device a request for a data item; c. logic for determining that said data item is not stored in the cache; d. logic for retrieving said data item from a data store; e. logic for storing said data item in the cache; and f. logic for sending said data item to the client device.
 40. The system of claim 39, wherein the cache server further comprises: a. logic for receiving local data from the client device; b. logic for storing the local data in the cache; and c. logic for synchronizing the local data stored in the cache with the data stored in the data store.
 41. The system of claim 39, wherein the cache server further comprises logic for de-duplicating the cache to ensure that each data item stored in the cache is different from every other data item stored in the cache.
 42. The system of claim 39, wherein the client device and the cache server are located on the same local-area network.
 43. The system of claim 39, wherein the cache server further comprises: logic for pre-populating the cache with data likely to be required by the client device.
 44. The system of claim 39, wherein the cache server further comprises: logic for selecting the data store from a group of data stores.
 45. The system of claim 39, wherein the cache server further comprises: logic for deleting said data item from the cache. 